#ifndef _key_driver_h_
#define _key_driver_h_

#include "stm32f4xx_hal.h"
#include "stm32f4xx_hal_gpio.h"
#include "FreeRTOS.h"
#include "queue.h"

#define			KEY_USER_PORT				(GPIOA)
#define			KEY_USER_PIN				(GPIO_PIN_0)

typedef enum
{
	KEY_USER_TYPE,
	KEY_MAX_TYPE
}key_type_e;

typedef enum
{
	KEY_NOT_PRESS = 0,
	KEY_SHORT_PRESS,
	KEY_LONG_PRESS,
	KEY_DOUBLE_PRESS,
	KEY_MAX_PRESS
}key_result_e;

typedef enum
{
	KEY_IDLE_EVENT = 0,
	KEY_TRIGGER_EVENT,
	KEY_SHORT_EVENT,
	KEY_LONG_EVENT,
	KEY_DOUBLE_EVENT,
	KEY_MAX_EVENT
}key_event_e;

typedef struct
{
	key_result_e key_result;
	key_event_e key_event;
}key_driver_t;

typedef struct
{
	void (* pfinit)(void);
	void (* pftask)(void);
	int (* pfget_result)(key_result_e * key_result);
}key_driver_ops_t;

#endif
